#include "RegistroIndice.h"
#include "../BloqArch/SerialInator.h"


RegistroIndice::RegistroIndice(){
	this->_posHijo = -1;
}

RegistroIndice::RegistroIndice(int id, int posHijo){
	this->clavePrimaria = id;
	this->_posHijo = posHijo;
}


RegistroIndice::~RegistroIndice(){
	this->_posHijo = -1;
}


RegistroIndice::RegistroIndice(const IRegistro& r){
	this->clavePrimaria = r.getClave();

	// Cuidado con esto para que no quede recursivo
	this->_posHijo = static_cast<const RegistroIndice*>(&r)->getPosHijo();
}


int RegistroIndice::serializar(char* arrBytes){
	SerialInator s;
	s.reset();

	// Una marca para separar los registros, es para debug
	s.serializar(arrBytes, '|');
	s.serializar(arrBytes, this->clavePrimaria);
	s.serializar(arrBytes, this->_posHijo);

	return s.getBufferSize();
}


int RegistroIndice::desSerializar(char* arrBytes){
	SerialInator s;
	s.reset();

	char pipe = '|';	// Una marca para separar los registros, para debug
	s.desSerializar(arrBytes, pipe);
	s.desSerializar(arrBytes, this->clavePrimaria);
	s.desSerializar(arrBytes, this->_posHijo);

	return s.getBufferSize();
}


int RegistroIndice::getSize() const{
	int tam = sizeof(char);	// Marca para debug
	tam += sizeof(this->_posHijo);
	tam += sizeof(this->clavePrimaria);
	return tam;
}
